package cn.tedu.dimanage.donation.webapi.mapper;
import cn.tedu.dimanage.pojo.dto.DonationCheckDTO;
import cn.tedu.dimanage.pojo.dto.DonationUpdateDTO;
import cn.tedu.dimanage.pojo.entity.Donation;
import cn.tedu.dimanage.pojo.vo.DonationDetailsVO;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @Classname: UserMapper
 * @Author: bromide
 * @CreateTime: 2022/6/9--下午11:18
 * @Version: V1.0
 * @Description:
 * 处理“捐赠”数据的持久层接口
 */
@Repository
public interface DonationMapper {

    /**
     * 增加捐赠
     * @param donation 用户提交的捐赠信息
     * @return 受影响行数
     */
    int addDonation(Donation donation);


    /**
     * 通过id查询单个捐献信息(工具方法)
     * @param id
     * @return
     */
    DonationDetailsVO selectDonationById(Long id);


    /**
     * 查找单人的捐赠记录
     * @param userId 用户id
     * @return 该用户所有的捐赠信息
     */
    List<DonationDetailsVO> selectDonationListByUserId(Long userId);

    /**
     * 通过物资关键字来搜索捐献的物资信息
     * 需要展示所有的时候将传过来一个空字符串就ok
     * @param keyword
     * @return
     */
    List<DonationDetailsVO> selectDonationList(String keyword);


    /**
     * 入库记录
     * @return 所有已经被同意的捐献申请记录
     */
    List<DonationDetailsVO> selectDonationIn(String keyword);

    /**
     * 管理员审核 捐献物资 时需要执行的方法
     * @param donationCheckDTO 管理员审核之后需要提交的信息
     * @return
     */
    int updateDonationByAdmin(DonationCheckDTO donationCheckDTO);

    /**
     * 在物资捐献之后,  审核通过之前  用户修改捐献信息所提交的信息
     * @return
     */
    int updateDonationByUser(DonationUpdateDTO donationUpdateDTO);


    /**
     * 删除未同意的捐献的物资(若捐献成功则不能删除)
     * @param id
     * @return
     */
    int deleteDonationById(Long id);
}
